package com.max.common.util;

import java.io.FileInputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * 
 * 项目名称:max-project-graphics
 * 文件名称:PropUtil.java
 * 文件描述:
 * 创建人员:chenyibo
 * 创建时间:2013-1-23 下午01:50:31
 * 修改人员:chenyibo
 * 修改时间:2013-1-23 下午01:50:31
 * 修改备注:
 * @version V1.0
 */
public class PropUtil 
{

//	private static final int interval = 1000*60*5;
	
	private static Map<String,Properties> map = new HashMap<String,Properties>();
	
	
//	private static Thread thread = new Thread()
//	{
//		public void run()
//		{
//			while(true)
//			{
//				try
//				{
//					if(map != null && !map.isEmpty())
//					{
//						for(String config:map.keySet())
//							init(config);
//					}
//					
//					Thread.sleep(interval);
//				} 
//				catch(Exception e)
//				{
//					e.printStackTrace();
//				}
//			}
//		}
//	};
//	
//	static
//	{
//		thread.start();
//	}
	
	
	private PropUtil(){}
	
	public static String getProp(String config,String key,String defaults)
	{
		String value = getProp(config,key);
		
		if(value == null)
			value = defaults;
		
		return value;
	}
	
	private static String getProp(String config,String key)
	{
		String value = null;
		
		if(config != null && !config.trim().equals("")
				&& key != null && !key.trim().equals(""))
		{
			if(!config.contains("."))
				config += ".properties";
			
			if(map == null || !map.containsKey(config))
				init(config);
			
			if(map.containsKey(config))
				value = map.get(config).getProperty(key);
		}
		
		return value;
	}
	
	
	private static synchronized void init(String config)
	{
		try
		{
			String configPath = null;
			URL url = PropUtil.class.getClassLoader().getResource(config);
			
			if(url != null)
			{
				configPath = url.getFile();
				
				Properties properties = new Properties();
				properties.load(new FileInputStream(configPath));
				
				if(map.containsKey(config))
					map.remove(config);
				
				map.put(config, properties);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	
	public static void main(String[] args)
	{
		System.out.println(PropUtil.getProp("jdbc-c3p0", "jdbc.initialPoolSize"));
	}
}
